The memory allocation code sometimes needs to enforce that a guest
that's been told to balloon down isn't going to expand further
(because it's still executing a previous balloon-up operation). That
means being able to set the desired max_pages even before the balloon
driver has brought tot_pages down to the right level.
Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
new_max = op->u.max_mem.max_memkb >> (PAGE_SHIFT-10);
spin_lock(&d->page_alloc_lock);
- if ( new_max >= d->tot_pages )
- {
- d->max_pages = new_max;
- ret = 0;
- }
+ /*
+ * NB. We removed a check that new_max >= current tot_pages; this means
+ * that the domain will now be allowed to "ratchet" down to new_max. In
+ * the meantime, while tot > max, all new allocations are disallowed.
+ */
+ d->max_pages = new_max;
+ ret = 0;
spin_unlock(&d->page_alloc_lock);
max_mem_out: